package com.ym.medical.service;

import com.ym.core.utils.tkmybatis.IBaseSV;
import com.ym.medical.domain.entity.DoctorDetailsEntity;
import com.ym.medical.domain.entity.UserEntity;
import com.ym.medical.domain.param.DoctorDetailsParam;
import com.ym.medical.domain.param.DoctorSearchParam;
import com.ym.medical.domain.vo.DoctorDetailAllInfoVo;
import com.ym.medical.domain.vo.ResultDoctor;
import com.ym.medical.domain.vo.SimpleDoctorInfoVo;

import java.util.List;

/**
 * 医生详情Service接口
 *
 * @author ym
 * @date 2020-08-19
 */
public interface IDoctorDetailsSV extends IBaseSV<DoctorDetailsEntity> {

	/**
	 * 新增
	 *
	 * @param doctorDetails
	 * @return
	 */
	long save(DoctorDetailsEntity doctorDetails);

	/**
	 * 根据ID查找
	 *
	 * @param id
	 * @return
	 */
	DoctorDetailsEntity findById(long id);

	/**
	 * 根据model查找
	 *
	 * @param doctorDetailsModel
	 * @return
	 */
	DoctorDetailsEntity findByModel(DoctorDetailsParam doctorDetailsModel);

	/**
	 * 根据model列表查找
	 *
	 * @param doctorDetailsModel
	 * @return
	 */
	List<DoctorDetailsEntity> list(DoctorDetailsParam doctorDetailsModel);

	/**
	 * 查询平台的医生列表
	 *
	 * @param keywords
	 * @return
	 */
	List<ResultDoctor> listPagePlatformMembers(String keywords, Long userId);

	/**
	 * 邀请医生加入工作室的医生列表
	 *
	 * @param query
	 * @return
	 */
	List<ResultDoctor> listStudioMembers(DoctorSearchParam query);

	/**
	 * 邀请医生加入工作室的医生列表
	 *
	 * @param query
	 * @return
	 */
	Long listStudioMembersCount(DoctorSearchParam query);


	/**
	 * 查询医生信息,最全
	 *
	 * @param doctorDetailsModel
	 * @return
	 */
	List<DoctorDetailAllInfoVo> listDoctorAllInfo(DoctorDetailsParam doctorDetailsModel);

	/**
	 * 修改医生个人信息
	 *
	 * @param doctorDetails
	 * @param user
	 */
	void updateByDoctorId(DoctorDetailsEntity doctorDetails, UserEntity user);

	/**
	 * 查询医生的简单信息
	 * @param doctorId
	 * @return
	 */
	List<SimpleDoctorInfoVo> selectSimpleDoctorInfo(Long doctorId);
}
